home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 May
/
EnigmA AMIGA RUN 18 (1997)(G.R. Edizioni)(IT)[!][issue 1997-05][EAR-CD II].iso
/
earcd
/
misc
/
emu
/
arosdev.lha
/
AROS
/
makefile
< prev
next >
Wrap
Makefile
|
1997-02-07
|
10KB
|
328 lines
# $Id: makefile,v 1.58 1997/02/07 14:21:55 digulla Exp $
# BEGIN_DESC{makefile}
# This is the toplevel makefile. Use it if you want to compile the whole
# distribution.
# END_DESC{makefile}
# BEGIN_DESC{makevar}
# \item{TOP} contains is the complete path to the root directory of the
# project.
#
# \item{CURDIR} is the path from $(TOP) to the current directory.
#
# END_DESC{makevar}
TOP=.
CURDIR=.
# BEGIN_DESC{localmakevar}
# END_DESC{localmakevar}
SPECIAL_CFLAGS = -Dmain=submain
include $(TOP)/config/make.cfg
# BEGIN_DESC{localmakevar}
# \item{LIBS} Flags which are passed to the linker for executables.
#
# \item{DEP_LIBS} Files on which executables depend (ie. if these files are
# newer than the executable, then the executable is linked anew).
#
# END_DESC{localmakevar}
ifeq ("$(SHARED_AR)","")
LIBAMIGAOS = $(LIBDIR)/libAmigaOS.a
else
LIBAMIGAOS = $(LIBDIR)/libAmigaOS.so
endif
DEP_LIBS= $(LIBAMIGAOS) \
$(GENDIR)/filesys/emul_handler.o \
$(LIBDIR)/libaros.a
LIBS=-L$(LIBDIR) \
$(GENDIR)/filesys/emul_handler.o -lAmigaOS -laros
# BEGIN_DESC{localmakevar}
# \item{SUBDIRS} Contains the names of directories in which Make will recurse
# for the main targets (eg. all, clean).
#
# END_DESC{localmakevar}
SUBDIRS = config compiler rom workbench apps
# BEGIN_DESC{localmakevar}
# \item{TESTDIR} The director in which the test cases will be put in
#
# \item{TESTS} Names of the files of the test cases
#
# END_DESC{localmakevar}
TESTDIR = $(BINDIR)/test
TESTS = $(TESTDIR)/tasktest \
$(TESTDIR)/signaltest \
$(TESTDIR)/exceptiontest \
$(TESTDIR)/tasktest2 \
$(TESTDIR)/messagetest \
$(TESTDIR)/semaphoretest \
$(TESTDIR)/initstructtest \
$(TESTDIR)/devicetest \
$(TESTDIR)/filetest
# BEGIN_DESC{target}
# \item{all} Compile the whole project (except the documentation).
#
# END_DESC{target}
ifeq ($(FLAVOUR),native)
all: setup subdirs
else
all : setup subdirs AmigaOS $(BINDIR)/arosshell
endif
# BEGIN_DESC{target}
# \item{crypt} Create the file crypt to create a password for CVS access
#
# END_DESC{target}
crypt : crypt.c
$(CC) -o crypt crypt.c
# BEGIN_DESC{localmakevar}
# \item{BINARCHIVE} Basename of the binary archive
#
# \item{DEVARCHIVE} Basename of the source archive
#
# END_DESC{localmakevar}
BINARCHIVE = AROS-$(ARCH)-$(KERNEL)-$(VERSION)
DEVARCHIVE = AROSdev-$(VERSION)
# BEGIN_DESC{target}
# \item{dist} Create the distribution archives
#
# END_DESC{target}
# BEGIN_DESC{internaltarget}
# \item{dir-dir} Creates the directory for the distribution archives
#
# \item{dist-tar} Create .tar.gz archive of the binary for the local
# architecture.
#
# \item{dist-lha} Create LhA archive of the binary for the local
# architecture.
#
# \item{dist-src} Create the source archive as .tar.gz and LhA files.
#
# END_DESC{internaltarget}
dist : dist-dir dist-tar dist-lha dist-src
cp README dist/$(BINARCHIVE).readme
cp README dist/$(DEVARCHIVE).readme
dist-dir : .FORCE
@if [ ! -d dist ]; then $(MKDIR) dist ; else true ; fi
@echo "Correcting access flags"
@chmod -R ug=rwX,o=rX .
dist-tar : .FORCE
cd $(ARCHDIR) ; \
$(RM) ../../dist/$(BINARCHIVE).tgz ; \
tar chvvzf ../../dist/$(BINARCHIVE).tgz AROS
dist-lha : .FORCE
cd $(ARCHDIR) ; \
$(RM) ../../dist/$(BINARCHIVE).lha ; \
lha a ../../dist/$(BINARCHIVE).lha AROS
dist-src : .FORCE
$(TOP)/scripts/makedist src $(DEVARCHIVE)
# BEGIN_DESC{internaltarget}
# \item{.FORCE} Alwaye remake rules that depend on this one
#
# END_DESC{internaltarget}
.FORCE :
# BEGIN_DESC{internaltarget}
# \item{setup} Check the setup and create all directories and files which
# are initially neccessary to compile AROS.
#
# END_DESC{internaltarget}
setup :
@if [ ! -d amiga/include ]; then \
echo "Missing AmigaOS includes. Please get a copy and put" ; \
echo "them into amiga/include." ; \
exit 10 ; \
else true ; fi
@if [ ! -d bin ]; then $(MKDIR) bin ; else true ; fi
@if [ ! -d $(ARCHDIR) ]; then $(MKDIR) $(ARCHDIR) ; else true ; fi
@if [ ! -d $(BINDIR) ]; then $(MKDIR) $(BINDIR) ; else true ; fi
@if [ ! -d $(SDIR) ]; then $(MKDIR) $(SDIR) ; else true ; fi
@if [ ! -d $(EXEDIR) ]; then $(MKDIR) $(EXEDIR) ; else true ; fi
@if [ ! -d $(LIBDIR) ]; then $(MKDIR) $(LIBDIR) ; else true ; fi
@if [ ! -d $(DEVSDIR) ]; then $(MKDIR) $(DEVSDIR) ; else true ; fi
@if [ ! -d $(SLIBDIR) ]; then $(MKDIR) $(SLIBDIR) ; else true ; fi
@if [ ! -d $(TESTDIR) ]; then $(MKDIR) $(TESTDIR) ; else true ; fi
@if [ ! -d $(OSMODDIR) ]; then $(MKDIR) $(OSMODDIR) ; else true ; fi
@if [ ! -d $(GENDIR) ]; then $(MKDIR) $(GENDIR) ; else true ; fi
@if [ ! -d $(GENDIR)/test ]; then $(MKDIR) $(GENDIR)/test ; else true ; fi
@if [ ! -d $(GENDIR)/filesys ]; then $(MKDIR) $(GENDIR)/filesys ; else true ; fi
@$(MAKE) $(MFLAGS) subdirs TARGET=setup
# BEGIN_DESC{target}
# \item{check} Run tests to check if AROS runs ok on your system.
#
# END_DESC{target}
check : $(TESTS)
@for test in $(TESTS) ; do \
echo "Running test `basename $$test`" ; $$test ; \
done
# BEGIN_DESC{target}
# \item{clean} Remove all generated files
#
# END_DESC{target}
clean:
-$(RM) $(ARCHDIR)
$(MAKE) $(MFLAGS) subdirs TARGET=clean
# BEGIN_DESC{internaltarget}
# \item{$(BINDIR)/arosshell} Create the AROS shell for systems which
# support emulation.
#
# END_DESC{internaltarget}
$(BINDIR)/arosshell: $(GENDIR)/arosshell.o $(DEP_LIBS)
$(CC) $(CFLAGS) $< $(LIBS) $(GUI_LDFLAGS) $(GUI_LIBFLAGS) -o $@
# BEGIN_DESC{internaltarget}
# \item{subdirs} Pass global targets to all subdirectories.
#
# END_DESC{internaltarget}
subdirs:
@for dir in $(SUBDIRS) ; do \
echo "Making $(TARGET) in $$dir..." ; \
if ( cd $$dir ; \
$(MAKE) $(MFLAGS) TOP=".." CURDIR="$(CURDIR)/$$dir" \
TARGET=$(TARGET) $(TARGET) ) ; \
then true ; else exit 1 ; fi ; \
done
# BEGIN_DESC{internaltarget}
# \item{AmigaOS} I have to restart make here since not all files might be
# existing in $(OSGENDIR) at the time when make was started in the
# first place.
#
# END_DESC{internaltarget}
AmigaOS :
@$(MAKE) $(MFLAGS) $(LIBAMIGAOS)
# BEGIN_DESC{internaltarget}
# \item{$(LIBDIR)/libAmigaOS.a} Recreate the kernel if any kernel function
# has been recompiled.
#
# END_DESC{internaltarget}
$(LIBAMIGAOS) : $(wildcard $(OSGENDIR)/*.o) \
$(wildcard $(GENDIR)/alib/*.o)
@echo "Recreating library"
ifeq ("$(SHARED_AR)","")
@$(AR) $@ $?
$(RANLIB) $@
else
@$(SHARED_AR) $@ $^
endif
CLIBDIR=$(TOP)/compiler/include/clib
DEFINEDIR=$(TOP)/compiler/include/defines
includes: \
$(CLIBDIR)/exec_protos.h \
$(CLIBDIR)/dos_protos.h \
$(CLIBDIR)/utility_protos.h \
$(CLIBDIR)/graphics_protos.h \
$(CLIBDIR)/intuition_protos.h \
$(CLIBDIR)/console_protos.h \
$(CLIBDIR)/icon_protos.h \
$(CLIBDIR)/iffparse_protos.h
$(CLIBDIR)/exec_protos.h: $(wildcard config/$(KERNEL)/*.s \
config/$(KERNEL)/*.c rom/exec/*.c) scripts/genprotos.h
gawk -f scripts/genprotos.h --assign lib=Exec \
config/$(KERNEL)/*.s config/$(KERNEL)/*.c rom/exec/*.c
@$(TOP)/scripts/moveifchanged $@.new $@
@name=`basename $@ _protos.h` ; \
$(TOP)/scripts/moveifchanged $(DEFINEDIR)/$$name.h.new $(DEFINEDIR)/$$name.h ; \
$(RM) $@.new $(DEFINEDIR)/$$name.h.new
$(CLIBDIR)/dos_protos.h: $(wildcard rom/dos/*.c) scripts/genprotos.h
gawk -f scripts/genprotos.h --assign lib=Dos \
rom/dos/*.c
@$(TOP)/scripts/moveifchanged $@.new $@
@name=`basename $@ _protos.h` ; \
$(TOP)/scripts/moveifchanged $(DEFINEDIR)/$$name.h.new $(DEFINEDIR)/$$name.h ; \
$(RM) $@.new $(DEFINEDIR)/$$name.h.new
$(CLIBDIR)/utility_protos.h: $(wildcard rom/utility/*.c) scripts/genprotos.h
gawk -f scripts/genprotos.h --assign lib=Utility \
rom/utility/*.c
@$(TOP)/scripts/moveifchanged $@.new $@
@name=`basename $@ _protos.h` ; \
$(TOP)/scripts/moveifchanged $(DEFINEDIR)/$$name.h.new $(DEFINEDIR)/$$name.h ; \
$(RM) $@.new $(DEFINEDIR)/$$name.h.new
$(CLIBDIR)/graphics_protos.h: $(wildcard rom/graphics/*.c) scripts/genprotos.h
gawk -f scripts/genprotos.h --assign lib=Graphics \
rom/graphics/*.c
@$(TOP)/scripts/moveifchanged $@.new $@
@name=`basename $@ _protos.h` ; \
$(TOP)/scripts/moveifchanged $(DEFINEDIR)/$$name.h.new $(DEFINEDIR)/$$name.h ; \
$(RM) $@.new $(DEFINEDIR)/$$name.h.new
$(CLIBDIR)/intuition_protos.h: $(wildcard rom/intuition/*.c) scripts/genprotos.h
gawk -f scripts/genprotos.h --assign lib=Intuition \
rom/intuition/*.c
@$(TOP)/scripts/moveifchanged $@.new $@
@name=`basename $@ _protos.h` ; \
$(TOP)/scripts/moveifchanged $(DEFINEDIR)/$$name.h.new $(DEFINEDIR)/$$name.h ; \
$(RM) $@.new $(DEFINEDIR)/$$name.h.new
$(CLIBDIR)/console_protos.h: rom/devs/cdinputhandler.c \
rom/devs/rawkeyconvert.c scripts/genprotos.h
gawk -f scripts/genprotos.h --assign lib=Console \
rom/devs/cdinputhandler.c rom/devs/rawkeyconvert.c
@$(TOP)/scripts/moveifchanged $@.new $@
@name=`basename $@ _protos.h` ; \
$(TOP)/scripts/moveifchanged $(DEFINEDIR)/$$name.h.new $(DEFINEDIR)/$$name.h ; \
$(RM) $@.new $(DEFINEDIR)/$$name.h.new
$(CLIBDIR)/icon_protos.h: $(wildcard workbench/libs/icon/*.c) scripts/genprotos.h
gawk -f scripts/genprotos.h --assign lib=Icon \
workbench/libs/icon/*.c
@$(TOP)/scripts/moveifchanged $@.new $@
@name=`basename $@ _protos.h` ; \
$(TOP)/scripts/moveifchanged $(DEFINEDIR)/$$name.h.new $(DEFINEDIR)/$$name.h ; \
$(RM) $@.new $(DEFINEDIR)/$$name.h.new
$(CLIBDIR)/iffparse_protos.h: $(wildcard workbench/libs/iffparse/*.c) scripts/genprotos.h
gawk -f scripts/genprotos.h --assign lib=IFFParse \
workbench/libs/iffparse/*.c
@$(TOP)/scripts/moveifchanged $@.new $@
@name=`basename $@ _protos.h` ; \
$(TOP)/scripts/moveifchanged $(DEFINEDIR)/$$name.h.new $(DEFINEDIR)/$$name.h ; \
$(RM) $@.new $(DEFINEDIR)/$$name.h.new
$(GENDIR)/%.o: %.c
$(CC) $(CFLAGS) $< -c -o $@
#$(GENDIR)/%.d: %.c
# @$(RM) $@
# @touch $@
# @$(MKDEPEND) -f$@ -p$(GENDIR)/ -- $(CFLAGS) -- $^
#
#include $(GENDIR)/arosshell.d
# BEGIN_DESC{target}
# \item{cleandep} Remove all generated dependency files.
#
# END_DESC{target}
cleandep:
find $(GENDIR) -name "*.d" -exec $(RM) "{}" \;
# BEGIN_DESC{target}
# \item{docs} Compile the documentation for AROS.
#
# END_DESC{target}
docs: .FORCE
cd $(TOP)/docs/src ; make